package org.oims.simpleserver.services;

import org.oims.simpleserver.endpoint.Endpoint;
import org.oims.simpleserver.entities.FriendChatDetailItem;
import org.oims.simpleserver.entities.db.FriendMsgItem;
import org.oims.simpleserver.entities.db.User;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface UserService {
    /**
     * 核对用户密码是否正确
     * @param MpNo 用户手机号
     * @param testedPwd 待测试的明文密码
     * @return 密码是否正确
     */
    boolean isCorrectUserPwd(String MpNo, String testedPwd);

    /**
     * 获取用户聊天列表
     * @param MpNo 用户手机号
     * @return 聊天列表
     */
    List<FriendChatDetailItem> getFriendChatDetails(String MpNo);

    /**
     * 获取User对象
     * @param MpNo
     * @return
     */
    @Transactional
    User login(String MpNo, String pwd);

    /**
     * 获取最近一系列的好友消息，并将对方发送的，未接收的消息状态改为已接收
     * @param userMpNo
     * @param friendMpNo
     * @param msgNum
     * @return 倒序列表
     */
    @Transactional()
    List<FriendMsgItem> getLstFriendMsgsAndUpdateStatus(String userMpNo, String friendMpNo, int msgNum);

    /**
     * 向好友发送消息
     * @param myMpNo
     * @param friendMpNo
     * @param type
     * @param content
     */
    @Transactional
    FriendMsgItem sendMsgToFriend(String myMpNo, String friendMpNo, int type, String content);

    /**
     *
     * @param token
     * @param endpoint
     */
    void registerEndpoint(String token, Endpoint endpoint);

    /**
     *
     * @param MpNo
     * @return
     */
    String getToken(String MpNo);

    /**
     *
     * @param MpNo
     */
    void removeTokenByMpNo(String MpNo);

    /**
     *
     * @param MpNo
     * @param endpoint
     */
    void closeEndpoint(String MpNo, Endpoint endpoint);
}
